function jsScroller(side, Cont){
//Private Variables
	var offset		= 0,
		intoCont	= Cont,
		offsetSide	= side,
		offsetSize	= null,
		offsetCSS  	= null,	//CSS dimension to check/set for this scroller
		cont 		= null,
		contSize 	= null,
		innerSize 	= 0,
		innerCont	= null,
		newerNav	= null,
		olderNav	= null,
		nItems		= 0,	//number of items appended to scroller
		nVisible	= null,	//number of full items visible at a time
		nScrolled	= 0,	//number of items scrolled
		This 		= this;
//end Private Variables

//Private Functions
	var setNewerNav = function(){
		if(nScrolled == 0){
			newerNav.addClass("newer-nav-inactive");
			newerNav.unbind();
		}
		
		if(nScrolled+nVisible == nItems-1){
			olderNav.removeClass("older-nav-inactive");
			olderNav.click(This.scrollOld);
		}
	};
	var setOlderNav = function(){
		if(nScrolled+nVisible == nItems){ //last item is visible
			olderNav.addClass("older-nav-inactive");
			olderNav.unbind();
		}
		if(nScrolled == 1){
			newerNav.removeClass("newer-nav-inactive");
			newerNav.click(This.scrollNew);
		}
	};
	var getContID = function(){
		var d = new Date();
	 	var nRand = Math.floor(Math.random() * d.getTime());
		return "js-widget-" + nRand;
	};
//end Private Functions

//Public Functions	
	//Scroll Event Handlers that set this 
	this.scrollNew = function() {
		var map = {};
		offset += offsetSize;
		map[offsetSide] = offset;
		nScrolled--;
		setNewerNav();
		innerCont.animate(map, 300);
	};
	this.scrollOld = function() {
		var map = {};
		offset -= offsetSize;
		map[offsetSide] = offset;
		nScrolled++;
		setOlderNav();
		innerCont.animate(map, 300);
	};
	//end Event Handlers
	
	this.attr = function(selector) {
		return cont.attr(selector);
	}
	this.find = function(selector) {
		return cont.find(selector);
	}
	this.init = function() { //intoCont is where the scroller is placed
		var contID = getContID();
//TODO: Instead of hard coding the scroller, I need to dynamically size it and change scroll logic		
	//The Scroller
		var html = 	"<div id='" + contID + "' class='scroll-container'>"
					+ "<div class='js-scroller-outer'>"
						+ "<div class='js-scroller-inner'>"
						+ "</div>"
					+ "</div>"
						//+ "<div class='js-attribution'>widget by <a href='http://www.jsblogstop.com/'>JSBlogStop</a></div>"
					+ "<div class='" + offsetSide + "-scroller'>"
						+ "<span class='newer-nav newer-nav-inactive scroller-nav'></span>"
						+ " Scroll "
						+ "<span class='older-nav scroller-nav'></span>"
					+ "</div>"
				+ "</div>";
		intoCont.append(html);
		
	//Set slider reference objects
		cont = $("#" + contID);
					
		innerCont 	= cont.find(".js-scroller-inner");
		newerNav 	= cont.find(".newer-nav");
		olderNav	= cont.find(".older-nav");
		olderNav.click(this.scrollOld);
		
		if(offsetSide == "left" || offsetSide == "right"){
			offsetCSS = "width";		
		}
		else {
			offsetCSS = "height";
		}
		contSize = parseInt(cont.css(offsetCSS).split("px")[0]);
		setNewerNav();
	};

//Accepts either a JQuery object or html 
	this.append = function(toAppend){
		var newObject;
		if(typeof toAppend == "object") {
			newObject = $("<div class='scroll-object'></div>");
			newObject.append(toAppend);
		}
		else {
			newObject = $("<div class='scroll-object'>" + toAppend + "</div>");
		}
		
		innerCont.append(newObject);	
		
		if(offsetCSS == "width"){
			offsetSize = newObject.outerWidth("true");
		}
		else {
			offsetSize = newObject.outerHeight("true");
		}
		innerSize += offsetSize;
			
		innerCont.css(offsetCSS, innerSize);
		nVisible = Math.floor(contSize/offsetSize);
		nItems++;
	};
	
	this.appendObj = function(object){
		this.append(object);
		nVisible = Math.floor(contSize/offsetSize);
		nItems++;
	};
//end Public Functions
	this.init();
}
